org 0x7c00
[bits 16]
xor ax, ax ; eax = 0
; 初始化段寄存器, 段地址全部设为0
mov ds, ax
mov ss, ax
mov es, ax
mov fs, ax
mov gs, ax

mov sp, 0x7c00 ; 初始化栈指针

; 获取光标位置
	mov ah, 0x03	
	mov bh, 0x00
	int 0x10

; 键盘输入I/O中断
Keyboard:
	mov ah, 0x00
	int 0x16
	
	cmp al, 0x0d
	je Print

Loop1:	;显示输入的字符
	mov ah, 0x02
	int 0x10
	add dl,	1
	mov ah, 0x09
	mov bl, 0x01
	mov cx, 0x01
	mov bh, 0x00
	int 0x10

jmp Keyboard

; 回显输出学号
Print:	
	; 获取光标位置
	mov ah, 0x03	
	mov bh, 0x00
	int 0x10

	; 用光标写学号
	mov ah, 0x09; 功能码
	mov bh, 0x00; 页码
	mov bl, 0x01; 颜色

	mov cx, 0x02; 输出个数

	mov al, '2' ; 字符
	int 0x10
	add dl, 2

	mov ah, 0x02; 设置光标位置！
	int 0x10

	mov ah, 0x09
	mov al, '3'
	int 0x10
	add dl, 2

	mov ah, 0x02; 设置光标位置！
	int 0x10

	mov ah, 0x09
	mov cx, 0x01
	mov al, '6'
	int 0x10
	add dl, 1

	mov ah, 0x02; 设置光标位置！
	int 0x10

	mov ah, 0x09
	mov cx, 0x02
	mov al, '0'
	int 0x10
	add dl, 2

	mov ah, 0x02; 设置光标位置！
	int 0x10

	mov ah, 0x09
	mov cx, 0x01
	mov al, '3'
	int 0x10
	add dl, 1

	mov ah, 0x02; 设置光标位置！
	int 0x10

jmp $ ; 死循环

times 510 - ($ - $$) db 0
db 0x55, 0xaa
